package pe.edu.upc.matrix.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import pe.edu.upc.matrix.excepcion.EExcepcionDAO;
import pe.edu.upc.matrix.modelo.MCompra;
import pe.edu.upc.matrix.modelo.MMensaje;
import pe.edu.upc.matrix.modelo.MPersona;
import pe.edu.upc.matrix.modelo.MPublicacion;
import pe.edu.upc.matrix.modelo.MUsuario;
import pe.edu.upc.matrix.negocio.NMensaje;
import pe.edu.upc.matrix.negocio.NPublicacion;
import pe.edu.upc.matrix.negocio.Ncompra;

/**
 * Servlet implementation class SGestionarCompra
 */
@WebServlet("/SGestionarCompra")
public class SGestionarCompra extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SGestionarCompra() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String idPublicacion  = "";
		String accion = (String)request.getParameter("accion");
		
		NPublicacion nPublicacion = new NPublicacion();
		MPublicacion mPublicacion = new MPublicacion(); 
		NMensaje nMensaje = new NMensaje();
		
		if(accion != null){
			switch (accion) {
			case "ir":
				idPublicacion = (String)request.getParameter("idPublicacion");
				try {
					mPublicacion = nPublicacion.obtenerPublicacionSeleccionada(Integer.parseInt(idPublicacion));
					request.setAttribute("publicacion", mPublicacion);
					RequestDispatcher rd = request.getRequestDispatcher("frmCompra.jsp");
					rd.forward(request, response);
				} catch (NumberFormatException | EExcepcionDAO e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				break;
			
			case "registrar":
				String cantidad = (String)request.getParameter("cantidad");
				idPublicacion = (String)request.getParameter("idPublicacion");
				String comentario = (String)request.getParameter("comentario");
				MUsuario usuario = (MUsuario)request.getSession().getAttribute("USUARIO_ACTUAL");
				Ncompra nCompra = new Ncompra();
				MPersona mPersona = new MPersona();
				mPersona.setIdPersona(usuario.getPersona().getIdPersona());
				try {
					mPublicacion = nPublicacion.obtenerPublicacionSeleccionada(Integer.parseInt(idPublicacion));
					request.setAttribute("publicacion", mPublicacion);
					MCompra mCompra = nCompra.registrarCompra(mPublicacion, mPersona, Integer.parseInt(cantidad), comentario);
					request.setAttribute("compra", mCompra);
					RequestDispatcher rd = request.getRequestDispatcher("frmCompra.jsp");
					rd.forward(request, response);
				} catch (EExcepcionDAO e) {
					request.setAttribute("mensajeError", "No se pudo registrar la compra.");
				}
				break;
			
			case "responder":
				String respuesta = (String)request.getParameter("cantidad");
				int idMensaje = Integer.parseInt((String)request.getParameter("idPublicacion"));
				try {
					MMensaje mMensaje = nMensaje.registrarRespuesta(idMensaje, respuesta);
					request.setAttribute("mensaje", mMensaje);
				} catch (EExcepcionDAO e) {
					request.setAttribute("mensajeError", "No se pudo registrar la compra.");
				}
				RequestDispatcher rd = request.getRequestDispatcher("micuenta.jsp?opcion=consultas");
				rd.forward(request, response);
				break;

			default:
				break;
			}	
		}
	}

}
